/**
 * 价格处理工具函数
 */

/**
 * 格式化价格
 * @param price 价格数值
 * @param currency 货币符号，默认为人民币¥
 * @returns 格式化后的价格字符串
 */
export const formatPrice = (price: number, currency = '¥'): string => {
  // 保留两位小数，如果小数部分为0，则显示整数
  const formattedPrice = price % 1 === 0 ? price.toString() : price.toFixed(2);
  return `${currency}${formattedPrice}`;
};

/**
 * 计算折扣价格
 * @param originalPrice 原价
 * @param discount 折扣，例如8.5表示8.5折
 * @returns 折扣后的价格
 */
export const calculateDiscountPrice = (originalPrice: number, discount: number): number => {
  const discountedPrice = originalPrice * (discount / 10);
  // 保留小数点后两位，四舍五入
  return Math.round(discountedPrice * 100) / 100;
};

/**
 * 计算优惠券后的价格
 * @param originalPrice 原价
 * @param couponAmount 优惠券金额
 * @returns 优惠后的价格
 */
export const calculateCouponPrice = (originalPrice: number, couponAmount: number): number => {
  const finalPrice = originalPrice - couponAmount;
  // 确保价格不会为负
  return finalPrice > 0 ? Math.round(finalPrice * 100) / 100 : 0;
};

/**
 * 格式化价格范围
 * @param minPrice 最低价格
 * @param maxPrice 最高价格
 * @param currency 货币符号
 * @returns 格式化后的价格范围字符串
 */
export const formatPriceRange = (minPrice: number, maxPrice: number, currency = '¥'): string => {
  if (minPrice === maxPrice) {
    return formatPrice(minPrice, currency);
  }
  return `${formatPrice(minPrice, currency)} - ${formatPrice(maxPrice, currency)}`;
};

/**
 * 将价格拆分为整数部分和小数部分
 * @param price 价格数值
 * @returns 包含整数部分和小数部分的对象
 */
export const splitPrice = (price: number): { integer: string, decimal: string } => {
  const [integer, decimal = '00'] = price.toFixed(2).split('.');
  return {
    integer,
    decimal
  };
}; 